/**
 * 自定义中间件----模拟类似于express.urlencoded这样的中间件，来解析post提交到服务器的表单数据
 * 实现步骤
 * 定义中间件
 * 监听req的data事件，来获取客户端发送到服务器的数据，如果数据量比较大，无法一次性发送完毕，则客户端会把数据切割后，分批发送到服务器。所以data事件
 *      可能会触发多此，每触发data事件时，获取到的数据知识完整数据的一部风，需要手动对接收到的数据进行拼接
 * 监听req的end事件--表示请求体数据接收完毕
 * 使用querystring 模块解析请求数据  （node内置模块
 * 将解析出来的数据挂载为req.body  （ 上游的req,res和下游的用的是同一份
 * 将自定义中间组件封装为模块
 * 
 */

const express = require('express');
const qs = require('querystring')
const app = express();

// 注册自定义中间件
app.use((req,res,next)=>{
  // 监听req的data的事件
  let str = '';
  req.on('data',(chunk)=>{
    str += chunk
  })
  // 监听req的end的事件
  req.on('end',()=>{
    console.log('请求体数据',qs.parse(str))
    req.body = qs.parse(str)
    next()
  })
})
app.post('/moni',(req,res)=>{
  res.send(req.body)
})


app.listen('80',()=>{
  console.log('服务器启动了。。。。 http://127.0.0.1/')
})


